故事是這樣的
這是一個再簡單不過的功能
有個頭像 > 點他 > 問你要上傳照片或拍照 > 更新頭像
但是...
安卓有些手機拍照之後角度會有點不太一樣
那也就算了
每個人看事情的角度本來就不一樣
那我讀取它的角度再去轉可以吧?
拿到的exif不是null就是直接例外FileNotFoundException
詳細問題連結,如果能給小弟一點提示,那就功德無量
好吧
該做的事情還是要做
我們先來把基本的功能講完
Android | iOS |
---|---|
ImageView | UIImageView |
Bitmap | UIImage |
public void changeAvatar(View view)
{
Dialog dialog = new AlertDialog.Builder(this)
.setTitle("請選擇頭像來源")
.setPositiveButton("相機", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE),kCameraIntentRequestCode);
}
})
.setNegativeButton("相簿", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent,kAlbumIntentRequestCode);
}
})
.setNeutralButton("檔案", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(Intent.createChooser(intent, "Select Picture"), kFileIntentRequestCode);
}
})
.create();
dialog.show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK || data == null)
{
return;
}
switch (requestCode)
{
case kCameraIntentRequestCode:
{
Bitmap bitmap = (Bitmap)data.getExtras().get("data");
imageView.setImageBitmap(bitmap);
break;
}
case kAlbumIntentRequestCode:
case kFileIntentRequestCode:
{
ContentResolver contentResolver = this.getContentResolver();
try
{
Bitmap bmp = MediaStore.Images.Media.getBitmap(contentResolver,data.getData());
imageView.setImageBitmap(bmp); imageView.setImageBitmap(rotateBitmapByDegree(bmp,getBitmapDegree(data.getData().getPath())));
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
break;
}
}
}
人家安卓模擬器連這個都幫你想好了⚠️⚠️⚠️
不只能拍
還可以移動鏡頭
補充個跟image完全沒關係的東西
可以去 https://github.com/mark33699/IDLA 看一下順便給顆⭐️
如果你喜歡我的影片別忘了按讚分享加訂閱,開啟紅色的小鈴鐺,我們明天見~